Request processing in a content delivery framework

ABSTRACT

A node in a content delivery network (CDN) receives a request for content and determines information about the request. When sufficient information about the content is determined, the request is assigned to an appropriate CD service to process the request; and when insufficient information about the content is determined, the request is assigned to a generic CD service to process the request. The generic CD service processes the request; and provides updated information about the content to be used for processing future requests. An appropriate CD service processing a request may also provide updated information about the content to be used for processing future requests.

BACKGROUND OF THE INVENTION Copyright Statement

This patent document contains material subject to copyright protection.The copyright owner has no objection to the reproduction of this patentdocument or any related materials in the files of the United StatesPatent and Trademark Office, but otherwise reserves all copyrightswhatsoever.

INCORPORATION BY REFERENCE

The following U.S. Patent and published U.S. patent applications arehereby fully incorporated herein by reference for all purposes:

-   -   1. U.S. Published Patent Application No. US 2013-0159472, titled        “Content Delivery Network,” filed Dec. 12, 2012;    -   2. U.S. Published Patent Application No. US 2013-0159473, titled        “Content Delivery Network,” filed Dec. 12, 2012;    -   3. U.S. Published Patent Application No. US 2014-0344399, titled        “Origin Server-Side Channel In A Content Delivery Framework,”        filed Jun. 17, 2014;    -   4. U.S. Pat. No. 6,185,598, titled “Optimized Network Resource        Location,” filed Feb. 10, 1998;    -   5. U.S. Pat. No. 8,015,298 titled “Load-Balancing Cluster,”        filed Feb. 23, 2009, issued Sep. 6, 2011; and    -   6. U.S. Pat. No. 8,489,750 titled “Load-Balancing Cluster,”        filed Sep. 13, 2010, issued Jul. 16, 2013.

FIELD OF THE INVENTION

This invention relates to content delivery and content deliverynetworks, and, more specifically, to request processing in contentdelivery networks.

BRIEF DESCRIPTION OF THE DRAWINGS

Other objects, features, and characteristics of the present invention aswell as the methods of operation and functions of the related elementsof structure, and the combination of parts and economies of manufacture,will become more apparent upon consideration of the followingdescription and the appended claims with reference to the accompanyingdrawings, all of which form a part of this specification.

FIG. 1 shows aspects of an exemplary content delivery framework inaccordance with an exemplary embodiment hereof;

FIGS. 2(A)-2(B) show aspects of an exemplary content delivery network(CDN) according to exemplary embodiments hereof;

FIGS. 3(A)-3(B) are flowcharts showing aspects of processing accordingto exemplary embodiments hereof; and

FIG. 4 depicts aspects of computing according to exemplary embodimentshereof.

DETAILED DESCRIPTION OF THE PRESENTLY PREFERRED EXEMPLARY EMBODIMENTSGlossary

As used herein, unless used otherwise, the following terms orabbreviations have the following meanings:

CD means Content Delivery;

CDN means Content Delivery Network;

DNS means Domain Name System;

HTTP means Hyper Text Transfer Protocol;

HTTPS means HTTP Secure;

URI means Uniform Resource Identifier; and

URL means Uniform Resource Locator.

BACKGROUND AND OVERVIEW

A content delivery network (CDN) distributes content (e.g., resources)efficiently to clients on behalf of one or more content providers,preferably via a public Internet. Content providers provide theircontent (e.g., resources) via origin sources (origin servers ororigins), and a CDN can also provide an over-the-top transport mechanismfor efficiently sending content in the reverse direction—from a clientto an origin server. Both end-users (clients) and content providersbenefit from using a CDN. Using a CDN, a content provider is able totake pressure off (and thereby reduce the load on) its own servers(e.g., its origin servers). Clients benefit by being able to obtaincontent with fewer delays.

Exemplary CDNs are described in U.S. Published Patent Applications Nos.US 2013-0159472 and US 2013-0159473, both filed Dec. 12, 2012; and No.US 2014-0344399, filed Jun. 17, 2014; and U.S. Pat. No. 6,185,598, filedFeb. 10, 1998, the entire contents of each of which has been fullyincorporated herein by reference for all purposes.

As used herein, clients are agents (e.g., browsers, set-top boxes, orother applications) used, e.g., by end users to issue requests (e.g.,DNS and HTTP requests, which include HTTPS requests) within the system.When no CDN or other intermediaries are in use, such requests may godirectly to the subscriber's own servers (e.g., their origin servers) orto other components in the Internet. When a content provider subscribesto CD services (e.g., as described U.S. Published Patent ApplicationsNos. US 2013-0159472 and US 2013-0159473), various requests may go tointermediate CD services that may map the end-user requests to originrequests, possibly transforming and caching content along the way.

Each distinct origin (e.g., origin server) is typically associated withone subscriber, but a subscriber may be associated with any number oforigins, including subscriber-owned and CDN provided origins.

The physical origins with which the CDN interacts may actually beintermediaries that acquire content from a chain of intermediaries,perhaps, e.g., elements of a separate content acquisition system thatultimately terminates at a subscriber's actual origin servers. As far asthe internals of the CDN are concerned, however, the origin is thatservice outside the system boundary from which content is directlyacquired.

As used herein, an end user is an entity (e.g., person or organization)that ultimately consumes some Internet service (e.g., a web site,streaming service, etc.) provided by a service provider entity. Thisprovider entity is sometimes referred to as a subscriber in thisdescription because they subscribe to CDN services in order toefficiently deliver their content, e.g., from their origins to theirconsumers. A CDN may provide value-added mediation (e.g., caching,transformation, etc.) between its subscribers and their end-users.

Request Processing in a CDN

Exemplary operational aspects of a content delivery framework 100 aredescribed here with reference to FIG. 1 . Clients 102 (including, e.g.,client 1 102-1, client 2 102-2, . . . , client k 102-k) request contentvia a CDN 104 that serves content on behalf of one or more subscribers.It should be appreciated that clients are generally and preferablyunaware that their requests are being handled by a CDN. A particularclient request (R) for particular content (C) is directed to a CDservice in the CDN to process that request. The client request may bedirected to the CD service by a rendezvous mechanism that is part of theCDN or in any known manner. In the drawing in FIG. 1 , the request (R)is directed to a proxy (also referred to as a slicer) 106. From theclient's perspective the proxy 106 is handling the request. However, theproxy 106 may be a front-end to a number of other CD services (e.g.,servers) that may process the client's request. As shown in the drawingin FIG. 1 , proxy 106 may select one of parents 108 to process theclient request (R). A proxy 106 may be a switch or the like.

As should be understood, the proxy 106 may modify and/or augment arequest that it receives from a client (e.g., it may normalize a URL).For this reason the request from client to the proxy is denoted Rwhereas the request from the proxy to the parent(s) is denote R′.Similarly, the request from the parent(s) to the origin(s) is denotedR″. In many cases R may be the same as R′ which may be the same as R″.Similarly, the content C provided by the origin(s) to the parents may bemodified and/or augmented before being provided to the client, hence thenotation C′ for the response 5 from the parent to the client. In manycases C may be the same as C′, and there is no requirement for anymodification. Modification of content may include the addition ofmetadata, reformatting, etc.

Preferably the selected parent CD service is one that is appropriate forthe kind of request it is given. For example, some CD services may beconfigured or tuned in such a way as to make them efficient for servinglarge resources, whereas other CD services may be configured or tuned tobe more efficient in serving small resources. Tuning/configuration of anode may include how much physical memory it has, the number/size of itsdisk drives, whether it has spinning drives or solid state drives(SSDs), and what software is running on it. Those of ordinary skill inthe art will realize and appreciate, upon reading this description, thatthese attributes combine to specify which sort of resources a particularmachine or CDN node is best equipped to serve. For example, a machinewith a large number of spinning drives but not much memory may be wellsuited to serve very large resources that can be streamed off of disk.Conversely, for libraries of large numbers of not very popular smallresources, a machine will want to have a large number of SSDs so thataccess time to them is sufficiently rapid. Machines with lots ofphysical memory can then deal well with a working set of large or smallresources that fit into memory much more efficiently than needing to goto disk. Machines with a lot of CPU power would be preferred forresources that require a lot of manipulation (e.g., scrubbing,edge-side-include, or other “application at the edge” processing).

In general, the more the proxy 106 knows about the requested content thebetter (more appropriate) its parent CD service selection should be. Inthis regard, the proxy 106 may query one or more attribute databases 110to determine attributes about the requested content (e.g., resources).The attribute database(s) 110 preferably provide attributes such asresource size. In preferred exemplary embodiments hereof client requestsare HTTP requests (which includes HTTPS requests) that take the form ofURIs or URLs, and the attribute database(s) 110 may be indexed usingURLs. As used herein, an appropriate CD service for a particular requestmay be one that is sufficiently configured (e.g., with hardware and/orsoftware) to process that particular request. It should be appreciatedthat while other CD services may be able to process a particularrequest, an appropriate CD service will preferably process thatparticular request efficiently (or at least as efficiently as other CDservices).

As noted, the proxy 106 selects an appropriate parent CD service (e.g.,server) to process the client request. The selected CD service (e.g.,parent server) may provide the requested content (R) to the requestingclient, possibly via the proxy slicer 106. In some cases the selected CDservice may obtain the requested content from another location such asan origin server 112 associated with the content's provider. Asdescribed, a proxy acts as a contact point that forwards requests toappropriate back-end machines based on which particular content (e.g.,resource) is being requested. That is, a proxy may receive all requestsfor content, but send fill requests for large resources to thosemachines tuned for large resources, and fill requests for smallresources to those machines tuned for small resources (or whatevercriteria maps to the tuning of the machines).

Aspects of request processing are described with reference now to FIG.2(A), for a case when the proxy 106 does not have sufficient (or any)information to allocate the request to an appropriate parent server. Aclient 102 makes a request R for content (at A1 in FIG. 2(A)). Therequest R is directed to a proxy 106 which looks up information aboutthe request R in the attribute database(s) 110 (at 202). In this casethere is insufficient information in the database(s) 110 to allow proxy106 to make an appropriate determination. In particular, in someimplementations, proxy 106 may not have information about the size ofthe content associated with request R. Proxy 106 then sends/assigns (atA2) the request R to a generic (or arbitrary) parent CD service 108-G.

As used herein, a generic CD service refers to any CD service that maybe able to process the request R, although that generic service may notbe appropriate or optimal to process the request.

The parent CD service 108-G requests the content associated with requestR (at A3) (e.g., from the appropriate origin service 112), and thenprovides the requested content C to the requesting client (possibly viathe proxy 106) (at A4-A5). The parent CD service 108-G also tracks andmaintains information about the content C, including, preferably, thesize of content C. Parent CD service 108-G may then update the attributedatabase(s) 110 (at 204) with information about content C. In some casesparent CD service 108-G may also (or instead) provide some of theattributes about the content C in headers with C.

When the proxy 106 receives a request for content that has previouslybeen processed, information about C may already be in the database(s)110. As shown with reference now to FIG. 2(B), a client 102 makes arequest R (at B1). The request is directed to the proxy 106 thatdetermines information about the content C associated with R. Forexample, proxy 106 may query the database(s) 110 (at 202′) to obtainattribute data about content C (e.g., the size of content C). Since inthis case proxy 106 has sufficient information, it assigns the requestR′ to an appropriate CD service (e.g., parent #A 108-A) (at B2). The CDservice 108-A processes the request (at B3), providing the requestedcontent C to the requesting client (possibly via the proxy 106).

Note that the CD service 108-A that processes the request may accessand/or update the attribute database(s) 110, e.g., to add informationabout popularity of the content C.

Aspects of processing by various entities are described with referenceto the exemplary flowcharts in FIGS. 3(A)-3(B). With reference to theflowchart in FIG. 3(A), showing aspects of the processing by proxy 106,the proxy 106 gets a request (R) for content (C) (at 302). The proxy 106determines (at 304) whether it has sufficient information about therequested content C (e.g., the size or popularity of C). Proxy 106 mayaccess one or more databases to determine information about content C.If the proxy 106 does not have and cannot ascertain sufficientinformation about content C to make an assignment of the request to anappropriate CD service (e.g., parent server) then (at 308), the proxy106 sends the request R to a generic CD service (G) (e.g., genericparent server). On the other hand, if the proxy 106 determines (at 304)that it does have (or can ascertain) sufficient information about therequested content C to make an assignment of the request to anappropriate CD service then (at 306) the proxy 106 may send the requestto an appropriate CD service (e.g., server).

With reference to the flowchart in FIG. 3(B), showing aspects of theprocessing by a generic server (G) (e.g., one that received a requestfrom the proxy 106 (at 308), the generic server (G) obtains the requestR for content C (at 310). In this case the request arrived at server Gbecause the proxy 106 did not have sufficient information about contentC to select an appropriate server. It may still be the case, however,that the generic server G has or knows information about the content C.If the generic server G knows information about the content C or has acopy, then that information about C is updated in the attributesdatabase(s). The generic server C gets a copy of the requested content(C) (at 312), e.g., from an origin server, and then serves the content Cto the requesting client (at 314). The generic server then updates theattribute database(s) (at 316) to include information it has ascertainedabout the content C (e.g., the size of the content). The generic servermay also (or instead) attach metadata to the response indicating acategorization of the resource, if needed. The next time a request isreceived at that proxy slicer for that resource, it could make use ofthe cached meta data to direct the fill request to the appropriateparent host. If the next request arrived at a different slicer, it mightcontact the same generic parent which could redirect it to theappropriate parent. It should be appreciated that when a request isprocessed by an appropriate server (sent at 306), the appropriate servermay also update the attribute database(s) to include information itascertains about the content C. Similarly, the appropriate server mayalso (or instead) attach metadata to the response indicating acategorization of the resource.

It should be appreciated that the CDN may need to re-learn aboutresources as they expire. For this reason it is preferable that CDservices that process requests update the database(s) (or cause them tobe updated) based on current information about resources.

Thus is described a system in which a CDN may determine categorizationof requests as it sees them. The CDN may learn about content (e.g.,resources), and which category each resource would fall into, as it seesrequests for the resources and adapt appropriately.

Computing

FIG. 4 is example schematic diagram of a computing system 400implementing a proxy, a parent server, or other computing device thatmay be used to perform the processes discussed herein. The computingsystem includes a bus 402 (i.e., interconnect), at least one processor404, at least one communication port 414, a main memory 406, a removablestorage media 410, a read-only memory 408, and a mass storage device412. Processor(s) 404 can be any known processor, such as, but notlimited to, an Intel® Itanium® or Itanium 2® processor(s), AMD® Opteron®or Athlon MP® processor(s), or Motorola® lines of processors.Communication port 414 can be any of an RS-232 port for use with a modembased dial-up connection, a 10/100 Ethernet port, a Gigabit port usingcopper or fiber, or a USB port. Communication port(s) 414 may be chosendepending on a network such as a Local Area Network (LAN), a Wide AreaNetwork (WAN), or any network to which the computer system connects. Theserver may be in communication with peripheral devices (e.g., displayscreen 416, input device 418 via Input/Output (I/O) port 420.

Main memory 406 can be Random Access Memory (RAM) or any other dynamicstorage device(s) commonly known in the art. Read-only memory 408 can beany static storage device(s) such as Programmable Read-Only Memory(PROM) chips for storing static information such as instructions forprocessor 404. Mass storage device 412 can be used to store informationand instructions. For example, hard disks such as the Adaptec® family ofSmall Computer Serial Interface (SCSI) drives, an optical disc, an arrayof disks such as Redundant Array of Independent Disks (RAID), such asthe Adaptec® family of RAID drives, or any other mass storage devices,may be used.

Bus 402 communicatively couples processor(s) 404 with the other memory,storage and communications blocks. Bus 402 can be a PCI/PCI-X, SCSI, orUniversal Serial Bus (USB) based system bus (or other) depending on thestorage devices used. Removable storage media 410 can be any kind ofexternal hard drives, floppy drives, IOMEGA® Zip Drives, CompactDisc-Read Only Memory (CD-ROM), Compact Disc—Re-Writable (CD-RW),Digital Video Disk-Read Only Memory (DVD-ROM), etc.

Embodiments herein may be provided as a computer program product, whichmay include a machine-readable medium having stored thereon instructionswhich may be used to program a computer (or other electronic devices) toperform a process. The machine-readable medium may include, but is notlimited to, floppy diskettes, optical discs, CD-ROMs, magneto-opticaldisks, ROMs, RAMs, erasable programmable read-only memories (EPROMs),electrically erasable programmable read-only memories (EEPROMs),magnetic or optical cards, flash memory, or other type ofmedia/machine-readable medium suitable for storing electronicinstructions.

As shown, main memory may be encoded with one or moreapplications/services 422 that support functionality as discussed abovewith respect to the various figures and elsewhere. For example, in oneembodiment, the application 422 may include or otherwise implement thevarious processes and/or instructions described herein. The application422 (and/or other resources as described herein) can be embodied assoftware code such as data and/or logic instructions (e.g., code storedin the memory or on another computer readable medium such as a disk)that supports processing functionality according to differentembodiments described herein. During operation of one embodiment,processor(s) 404 accesses main memory 406 via the use of bus 402 inorder to launch, run, execute, interpret or otherwise perform the logicinstructions of the application 422. Execution of the application 422produces processing functionality in application process 424. In otherwords, the process 424 represents one or more portions of theapplication 422 performing within or upon the processor(s) 404 in thecomputer system 400.

The description above includes example systems, methods, techniques,instruction sequences, and/or computer program products that embodytechniques of the present disclosure. However, it is understood that thedescribed disclosure may be practiced without these specific details. Inthe present disclosure, the methods disclosed may be implemented as setsof instructions or software readable by a device. Further, it isunderstood that the specific order or hierarchy of steps in the methodsdisclosed are instances of example approaches. Based upon designpreferences, it is understood that the specific order or hierarchy ofsteps in the method can be rearranged while remaining within thedisclosed subject matter. The accompanying method claims presentelements of the various steps in a sample order, and are not necessarilymeant to be limited to the specific order or hierarchy presented.

CONCLUSION

As used herein, including in the claims, the phrase “at least some”means “one or more,” and includes the case of only one. Thus, e.g., thephrase “at least some services” means “one or more services”, andincludes the case of one service.

As used herein, including in the claims, the phrase “based on” means“based in part on” or “based, at least in part, on,” and is notexclusive. Thus, e.g., the phrase “based on factor X” means “based inpart on factor X” or “based, at least in part, on factor X.” Unlessspecifically stated by use of the word “only”, the phrase “based on X”does not mean “based only on X.”

As used herein, including in the claims, the phrase “using” means “usingat least,” and is not exclusive. Thus, e.g., the phrase “using X” means“using at least X.” Unless specifically stated by use of the word“only”, the phrase “using X” does not mean “using only X.”

In general, as used herein, including in the claims, unless the word“only” is specifically used in a phrase, it should not be read into thatphrase.

As used herein, including in the claims, the phrase “distinct” means “atleast partially distinct.” Unless specifically stated, distinct does notmean fully distinct. Thus, e.g., the phrase, “X is distinct from Y”means that “X is at least partially distinct from Y,” and does not meanthat “X is fully distinct from Y.” Thus, as used herein, including inthe claims, the phrase “X is distinct from Y” means that X differs fromY in at least some way.

As used herein, including in the claims, a list may include only oneitem, and, unless otherwise stated, a list of multiple items need not beordered in any particular manner. A list may include duplicate items.For example, as used herein, the phrase “a list of CDN services” mayinclude one or more CDN services.

It should be appreciated that the words “first” and “second” in thedescription and claims are used to distinguish or identify, and not toshow a serial or numerical limitation. Similarly, the use of letter ornumerical labels (such as “(a)”, “(b)”, and the like) are used to helpdistinguish and/or identify, and not to show any serial or numericallimitation or ordering.

No ordering is implied by any of the labeled boxes in any of the flowdiagrams unless specifically shown and stated. When disconnected boxesare shown in a diagram, the activities associated with those boxes maybe performed in any order, including fully or partially in parallel.

While the invention has been described in connection with what ispresently considered to be the most practical and preferred embodiments,it is to be understood that the invention is not to be limited to thedisclosed embodiment, but on the contrary, is intended to cover variousmodifications and equivalent arrangements included within the spirit andscope of the appended claims.

I claim:
 1. A computer-implemented method, the method comprising: by anode in a network, (A) receiving a request for content stored in anorigin server; (B) attempting to determine information about thecontent, including attempting to determine at least a size of thecontent, and wherein the size of the content is not determined asattempted; (C) assigning the request to a generic service to process therequest, wherein the generic service comprises at least one server, andwherein the generic service processes the request and provides updatedinformation about the content including the size of the content.
 2. Themethod of claim 1 wherein an appropriate service and the generic serviceare selected from caching services.
 3. The method of claim 1 wherein therequest is an HTTP request for a resource.
 4. The method of claim 1wherein the request comprises a URI or URL and wherein the determininginformation about the request in (B) comprises accessing a mapping fromthe URL to the information about the content associated with therequest.
 5. The method of claim 4 wherein the URL corresponds to aparticular resource and wherein the information about the particularresource comprises a size of the particular resource.
 6. The method ofclaim 4 wherein the providing updated information about the content in(C) comprises updating the mapping.
 7. The method of claim 6 wherein themapping is maintained in one or more databases.
 8. Acomputer-implemented method, the method comprising: by a node in anetwork, (A) receiving a request for content stored in an origin server;(B) attempting to determine a category for the content, wherein the iscategory for the content is not determined as attempted; (C) assigningthe request to a generic service to process the request, wherein thegeneric service comprises at least one server, and wherein the genericservice processes the request and provides the category for the content.9. The method of claim 8 wherein the category for the content is basedon a size of the content.
 10. The method of claim 9 wherein the requestis an HTTP request and wherein the content comprises one or moreresources.
 11. A computer program product having computer readableinstructions stored on non-transitory computer readable media, thecomputer readable instructions including instructions for implementing acomputer-implemented method, the method operable on a device comprisinghardware including memory and at least one processor and running aservice on the hardware, the method comprising, by a node in a network:(A) receiving a request for content stored in an origin server; (B)attempting to determine information about the content, includingattempting to determine at least a size of the content, and wherein thesize of the content is not determined as attempted; (C) assigning therequest to a generic service to process the request, wherein the genericservice comprises at least one server, and wherein the generic serviceprocesses the request and provides updated information about thecontent, including the size of the content.
 12. The computer programproduct of claim 11 wherein an appropriate service and the genericservice are selected from caching services.
 13. The computer programproduct of claim 11 wherein the request is an HTTP request for aresource.
 14. The computer program product of claim 13 wherein thesufficient information about the content comprises a size of thecontent.
 15. The computer program product of claim 11 wherein therequest comprises a URI or URL and wherein the determining informationabout the request in (B) comprises accessing a mapping from the URL tothe information about the content associated with the request.
 16. Thecomputer program product of claim 11 wherein the providing updatedinformation about the content in (C) comprises updating the mapping. 17.The computer program product of claim 16 wherein the mapping ismaintained in one or more databases.